function C57_CPP_Plot_Cell_Recurring_Probability_Bar_Graph(Data_Summary)
%% Step 1: Collect all Data

% C57_5
[C5_saline, C5_saline_M] = Cell_Recurring_Probability_One_Animal_One_Dose(Data_Summary, 'saline', 'C57_5');
[C5_cpp1, C5_cpp1_M] = Cell_Recurring_Probability_One_Animal_One_Dose(Data_Summary, '(R)_CPP 1mg/kg', 'C57_5');
[C5_cpp3, C5_cpp3_M] = Cell_Recurring_Probability_One_Animal_One_Dose(Data_Summary, '(R)_CPP 3mg/kg', 'C57_5');
[C5_cpp10, C5_cpp10_M] = Cell_Recurring_Probability_One_Animal_One_Dose(Data_Summary, '(R)_CPP 10mg/kg', 'C57_5');

% C57_6
[C6_saline, C6_saline_M] = Cell_Recurring_Probability_One_Animal_One_Dose(Data_Summary, 'saline', 'C57_6');
[C6_cpp1, C6_cpp1_M] = Cell_Recurring_Probability_One_Animal_One_Dose(Data_Summary, '(R)_CPP 1mg/kg', 'C57_6');
[C6_cpp3, C6_cpp3_M] = Cell_Recurring_Probability_One_Animal_One_Dose(Data_Summary, '(R)_CPP 3mg/kg', 'C57_6');
[C6_cpp10, C6_cpp10_M] = Cell_Recurring_Probability_One_Animal_One_Dose(Data_Summary, '(R)_CPP 10mg/kg', 'C57_6');

% C57_7
[C7_saline, C7_saline_M] = Cell_Recurring_Probability_One_Animal_One_Dose(Data_Summary, 'saline', 'C57_7');
[C7_cpp1, C7_cpp1_M] = Cell_Recurring_Probability_One_Animal_One_Dose(Data_Summary, '(R)_CPP 1mg/kg', 'C57_7');
[C7_cpp3, C7_cpp3_M] = Cell_Recurring_Probability_One_Animal_One_Dose(Data_Summary, '(R)_CPP 3mg/kg', 'C57_7');
[C7_cpp10, C7_cpp10_M] = Cell_Recurring_Probability_One_Animal_One_Dose(Data_Summary, '(R)_CPP 10mg/kg', 'C57_7');

% C57_8
[C8_saline, C8_saline_M] = Cell_Recurring_Probability_One_Animal_One_Dose(Data_Summary, 'saline', 'C57_8');
[C8_cpp1, C8_cpp1_M] = Cell_Recurring_Probability_One_Animal_One_Dose(Data_Summary, '(R)_CPP 1mg/kg', 'C57_8');
[C8_cpp3, C8_cpp3_M] = Cell_Recurring_Probability_One_Animal_One_Dose(Data_Summary, '(R)_CPP 3mg/kg', 'C57_8');
[C8_cpp10, C8_cpp10_M] = Cell_Recurring_Probability_One_Animal_One_Dose(Data_Summary, '(R)_CPP 10mg/kg', 'C57_8');

%% Step2: Organize & Summarize data

% get mean for each genotype under each dose
saline_M = mean(cat(1, C5_saline_M, C6_saline_M, C7_saline_M, C8_saline_M));
cpp1_M = mean(cat(1, C5_cpp1_M, C6_cpp1_M, C7_cpp1_M, C8_cpp1_M));
cpp3_M = mean(cat(1, C5_cpp3_M, C6_cpp3_M, C7_cpp3_M, C8_cpp3_M));
cpp10_M = mean(cat(1, C5_cpp10_M, C6_cpp10_M, C7_cpp10_M, C8_cpp10_M));

% get standard error for each genotype under each dose (from the mean of each animal, not individual experiment)
saline_SE = calculate_standard_error(cat(1, C6_saline_M, C8_saline_M, C7_saline_M, C8_saline_M));
cpp1_SE = calculate_standard_error(cat(1, C6_cpp1_M, C8_cpp1_M, C7_cpp1_M, C8_cpp1_M));
cpp3_SE = calculate_standard_error(cat(1, C6_cpp3_M, C8_cpp3_M, C7_cpp3_M, C8_cpp3_M));
cpp10_SE = calculate_standard_error(cat(1, C6_cpp10_M, C8_cpp10_M, C7_cpp10_M, C8_cpp10_M));

%% Step 3: Plot Data

figure
% plot for WT
A = categorical({'0 (saline)'});
B = categorical({'1'});
C = categorical({'3'});
D = categorical({'10'});
X = cat(2,A,B,C,D);
X = reordercats(X,{'0 (saline)','1','3','10'});
Y = cat(2, saline_M, cpp1_M, cpp3_M, cpp10_M);
bar(X(1,1),Y(1,1),0.2,'LineWidth',1.2,'FaceColor','#2AF598');
% h.CData(1,:) = [0 0 1]; % color up each individual bar
ylabel('Fraction of Recurring Cells');
xlabel('(R)-CPP Dose (mg/kg)');
hold on
bar(X(1,2),Y(1,2),0.2,'LineWidth',1.2,'FaceColor','#1BD7BB');
hold on
bar(X(1,3),Y(1,3),0.2,'LineWidth',1.2,'FaceColor','#08B3E5');
hold on
bar(X(1,4),Y(1,4),0.2,'LineWidth',1.2,'FaceColor','#003193');
hold on
err(1,1)=saline_SE;
err(1,2)=cpp1_SE;
err(1,3)=cpp3_SE;
err(1,4)=cpp10_SE;
er = errorbar(X,Y,[],err,'LineWidth',2);    
er.Color = [0 0 0];                            
er.LineStyle = 'None'; 
ylim([0,1]);
set(gca,'FontSize',20);
hold on

% scatter plots with horizontal offsets - quick & dirty
half_num_animals_in_plot = 2;
initial_offset = -0.2;
offset = initial_offset;

sh = scatter(repmat(A,size(C5_saline,1),1),C5_saline(:,1),80,'^','r','LineWidth',2);
offset = offset - (initial_offset/half_num_animals_in_plot);
sh.XData = double(sh.XData) + offset;

sh = scatter(repmat(A,size(C6_saline,1),1),C6_saline(:,1),80,'>','r','LineWidth',2);
offset = offset - 0.75*(initial_offset/half_num_animals_in_plot);
sh.XData = double(sh.XData) + offset;

sh = scatter(repmat(A,size(C7_saline,1),1),C7_saline(:,1),80,'<','r','LineWidth',2);
offset = offset - 0.5*(initial_offset/half_num_animals_in_plot);
sh.XData = double(sh.XData) + offset;

sh = scatter(repmat(A,size(C8_saline,1),1),C8_saline(:,1),80,'o','r','LineWidth',2);
offset = offset - 0.75*(initial_offset/half_num_animals_in_plot);
sh.XData = double(sh.XData) + offset;


half_num_animals_in_plot = 2;
initial_offset = -0.2;
offset = initial_offset;

sh = scatter(repmat(B,size(C5_cpp1,1),1),C5_cpp1(:,1),80,'^','r','LineWidth',2);
offset = offset - (initial_offset/half_num_animals_in_plot);
sh.XData = double(sh.XData) + offset;

sh = scatter(repmat(B,size(C6_cpp1,1),1),C6_cpp1(:,1),80,'>','r','LineWidth',2);
offset = offset - 0.75*(initial_offset/half_num_animals_in_plot);
sh.XData = double(sh.XData) + offset;

sh = scatter(repmat(B,size(C7_cpp1,1),1),C7_cpp1(:,1),80,'<','r','LineWidth',2);
offset = offset - 0.5*(initial_offset/half_num_animals_in_plot);
sh.XData = double(sh.XData) + offset;

sh = scatter(repmat(B,size(C8_cpp1,1),1),C8_cpp1(:,1),80,'o','r','LineWidth',2);
offset = offset - 0.75*(initial_offset/half_num_animals_in_plot);
sh.XData = double(sh.XData) + offset;


half_num_animals_in_plot = 2;
initial_offset = -0.2;
offset = initial_offset;

sh = scatter(repmat(C,size(C5_cpp3,1),1),C5_cpp3(:,1),80,'^','r','LineWidth',2);
offset = offset - (initial_offset/half_num_animals_in_plot);
sh.XData = double(sh.XData) + offset;

sh = scatter(repmat(C,size(C6_cpp3,1),1),C6_cpp3(:,1),80,'>','r','LineWidth',2);
offset = offset - 0.75*(initial_offset/half_num_animals_in_plot);
sh.XData = double(sh.XData) + offset;

sh = scatter(repmat(C,size(C7_cpp3,1),1),C7_cpp3(:,1),80,'<','r','LineWidth',2);
offset = offset - 0.5*(initial_offset/half_num_animals_in_plot);
sh.XData = double(sh.XData) + offset;

sh = scatter(repmat(C,size(C8_cpp3,1),1),C8_cpp3(:,1),80,'o','r','LineWidth',2);
offset = offset - 0.75*(initial_offset/half_num_animals_in_plot);
sh.XData = double(sh.XData) + offset;


half_num_animals_in_plot = 2;
initial_offset = -0.2;
offset = initial_offset;

sh = scatter(repmat(D,size(C5_cpp10,1),1),C5_cpp10(:,1),80,'^','r','LineWidth',2);
offset = offset - (initial_offset/half_num_animals_in_plot);
sh.XData = double(sh.XData) + offset;

sh = scatter(repmat(D,size(C6_cpp10,1),1),C6_cpp10(:,1),80,'>','r','LineWidth',2);
offset = offset - 0.75*(initial_offset/half_num_animals_in_plot);
sh.XData = double(sh.XData) + offset;

sh = scatter(repmat(D,size(C7_cpp10,1),1),C7_cpp10(:,1),80,'<','r','LineWidth',2);
offset = offset - 0.5*(initial_offset/half_num_animals_in_plot);
sh.XData = double(sh.XData) + offset;

sh = scatter(repmat(D,size(C8_cpp10,1),1),C8_cpp10(:,1),80,'o','r','LineWidth',2);
offset = offset - 0.75*(initial_offset/half_num_animals_in_plot);
sh.XData = double(sh.XData) + offset;


end